package cn.tedu.csmall.stock.webapi.quartz;

import cn.tedu.csmall.stock.webapi.utils.RedisBloomUtils;
import lombok.extern.slf4j.Slf4j;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;

import java.time.LocalDateTime;

@Slf4j
public class QuartzJob implements Job {


    @Autowired
    private RedisBloomUtils redisBloomUtils;

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        // 当前Job实现类只是为了测试Quartz的调用效果,所以操作尽量简单,这里只是输出时间
        log.info("-----------------"+ LocalDateTime.now() +"---------------");

        // 定义一个数组,用于将其中的数据保存到布隆过滤器中
        String[] colors={"red","orange","yellow","green","blue","black","pink"};
        // 定义布隆过滤器的常量key
        final String COLOR_BLOOM="color_bloom";
        // RedisBloomUtils对象可以指定key对应的布隆过滤器的误判率
        // bfreserve可以实现布隆过滤器的误判率设置,默认情况下存100个元素有1%的误判率
        // redisBloomUtils.bfreserve(COLOR_BLOOM,0.001,10000);
        // 下面将colors数组中元素保存到布隆过滤器中
        redisBloomUtils.bfmadd(COLOR_BLOOM,colors);
        // 下面判断指定元素是否保存在redis的布隆过滤器中
        String el="gray";
        // 输出是否在布隆过滤器中
        log.info("{}是否在布隆过滤器中:{}",el,
                redisBloomUtils.bfexists(COLOR_BLOOM,el));
    }
}
